#include "uart.h"
#include "printk.h"
#include "mm.h"
#include "task.h"
#include "do_fork.h"
#include "sched.h"

void trigger_alignment();

void kernel_main(void)
{
	memory_init();
	/*
	void* new_page1 = alloc_one_page();
	void* new_page2 = alloc_one_page();
	free_one_page(new_page2+3);
	free_one_page(new_page1);
	void* ptr1 = kmalloc(37);
	void* ptr2 = kmalloc(37);
	void* ptr3 = kmalloc(37);
	void* ptr4 = kmalloc(37);
	kfree(ptr1);
	kfree(ptr2);
	kfree(ptr3);
	kfree(ptr4);
	*/
	uart_init();
	init_printk_done();
	uart_send_string("Welcome BenOS!\r\n");
	init_run_queue();
	do_fork(0, (u64)(&task01), 0);
	do_fork(0, (u64)(&task02), 0);
	// char c;
	while (1) {
		printk("main \n");
		schedule();
		// c = uart_recv();
		// uart_send(c);
		// uart_send(c);
	}
}
